package org.advanced.io;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @author John.zhang
 * @version Id: InputStreams, v 1.0 2020/12/14 11:39 ZhiYong Exp $
 * I 从磁盘读取数据到内存
 * O 把内存中的数据写入到磁盘
 */
public class InputStreams {

    public static void main(String[] args) throws IOException {
        File file = new File("C:/data/io/io.txt");
        try (
                //java7 可以实现自动关闭IO (但是流必须实现了 Closeable)
                FileInputStream fileInputStream = new FileInputStream(file);
                FileOutputStream fileOutputStream = new FileOutputStream("C:/data/io/io01.txt")) {

            int len = 0;
            //先将字节放到一个buffer缓存冲
            byte[] buffer = new byte[1024];
            while ((len = fileInputStream.read(buffer)) != -1) {
                //读取的数据保存到内存中，也可以写到磁盘
                //fileOutputStream.write(len);//写到磁盘(1000次交互)
                fileOutputStream.write(buffer, 0, len);
            }
            //如果不关闭，则资源会被占用，其他程序将无法操作
            //对于外部的资源JVM 是没办法控制关闭的，但是可以通过 try()方式
            //fileOutputStream.close();
            //fileInputStream.close();
        }
    }

}
